package Offer;

public class Test39b 
{

	public static void main(String[] args) 
	{
		BinaryTreeNode node1=new BinaryTreeNode(1);
		BinaryTreeNode node2=new BinaryTreeNode(2);
		BinaryTreeNode node3=new BinaryTreeNode(3);
		BinaryTreeNode node4=new BinaryTreeNode(4);
		BinaryTreeNode node5=new BinaryTreeNode(5);
		BinaryTreeNode node6=new BinaryTreeNode(6);
		BinaryTreeNode node7=new BinaryTreeNode(7);
		node1.left=node2;
		node1.right=node3;
		node2.left=node4;
		node2.right=node5;
		node3.left=node6;
		node3.right=node7;
		node4.left=node4.right=null;
		node5.left=node4.right=null;
		node6.left=node4.right=null;
		node7.left=node4.right=null;
        System.out.println(isBalanced(node1));
	}
	public static boolean isBalanced(BinaryTreeNode root)
	{
		int depth=0;
		return isBalanced(root,depth);
	}
	public static boolean isBalanced(BinaryTreeNode root,int depth)
	{
		if(root==null)
		{
			depth=0;
			return true;
		}
		int left=0;
		int right=0;
		if(isBalanced(root.left,left)&&isBalanced(root.right,right))
        {
        	if(left-right<=1&&left-right>=-1)
        	{
        		depth=1+(left>right?left:right);
        		return true;
        	}
        }
        return false;
	}
}
